package com.girant.service.util;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
 * 搜索工具类
 * 职责：提供通用工具方法（字符提取、通配符转义等）
 */

public class SearchUtils {

    /**
     * 提取中文字符（只保留中文）
     */
    public static String extractChinese(String keyword) {
        if (keyword == null || keyword.isEmpty()) {
            return "";
        }
        // 匹配中文字符（\u4e00-\u9fa5）
        Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]+");
        Matcher matcher = pattern.matcher(keyword);
        StringBuilder chinese = new StringBuilder();
        while (matcher.find()) {
            chinese.append(matcher.group());
        }
        return chinese.toString();
    }

    /**
     * 提取拼音/字母（只保留a-z/A-Z）
     */
    public static String extractPinyin(String keyword) {
        if (keyword == null || keyword.isEmpty() ||keyword.contains("-") ) {
            return "";
        }
        // 匹配字母（a-z/A-Z）
        Pattern pattern = Pattern.compile("[a-zA-Z]+");
        Matcher matcher = pattern.matcher(keyword);
        StringBuilder pinyin = new StringBuilder();
        while (matcher.find()) {
            pinyin.append(matcher.group());
        }
        return pinyin.toString();
    }

    /**
     * 提取编号（含字母、数字、-等常见编号符号）
     */
    public static String extractCode(String keyword) {
        if (keyword == null || keyword.isEmpty()) {
            return "";
        }
        // 匹配编号格式（字母、数字、-）
        Pattern pattern = Pattern.compile("[a-zA-Z0-9\\-]+");
        Matcher matcher = pattern.matcher(keyword);
        StringBuilder code = new StringBuilder();
        while (matcher.find()) {
            code.append(matcher.group());
        }
        return code.toString();
    }

    /**
     * 转义ES通配符（*、?）
     */
    public static String escapeWildcards(String keyword) {
        if (keyword == null) {
            return "";
        }
        return keyword.replace("*", "\\*");
    }
}